/*
 * @Date: 2023-03-29 11:32:27
 * @LastEditTime: 2023-03-29 11:32:52
 * @FilePath: /mode-startup-template/src/utils/tools/format.ts
 * 介绍:格式化
 */
/**
 * * 省略文本
 * @param text 省略文本
 * @param config 省略配置
 */
export function omitText(
  text: string | null | undefined,
  config: [number, string, number] = [5, "...", 5]
) {
  if (!text) return "----";
  let res = text.slice(0, config[0]);
  res += config[1];
  res += text.slice(text.length - config[2]);
  return res;
}

/**
 * * 格式化数字
 * @param number 要格式化的小数
 * @param decimals 保留小数位
 * @returns string 结果
 */
export function formatNumber(
  number: number | string | undefined | null,
  decimals: number = 2
): string {
  if (!number && number != 0) return "--";
  number = Number(number);
  if (isNaN(number)) return "--";
  let numberStr = (
    Math.floor(number * Math.pow(10, decimals)) / Math.pow(10, decimals)
  ).toFixed(decimals);
  return numberStr;
}
/**
 * * 小数精度修正
 * @param number 要修正的小数
 * @param decimals 保留小数位
 * @returns string 结果
 */
export function parseNumber(
  number: number | string | undefined | null,
  decimals: number = 6
): string {
  if (!number && number != 0) return "--";
  if (isNaN(Number(number))) return "--";
  let floatStr = (
    Math.round(
      (parseFloat(number.toString()) + Number.EPSILON) * Math.pow(10, decimals)
    ) / Math.pow(10, decimals)
  ).toFixed(decimals);
  return floatStr;
}
/**
 * * 固定小数位
 * @param number 数字
 * @param fixed 固定位数
 * @returns 结果
 */
export function fixedNumber(number: number, fixed = 2): string {
  let strNumber = number.toString();
  while (strNumber.length < fixed) strNumber = `0${strNumber}`;
  return strNumber;
}
